package com.hospital.user.cost.service.impl;

import com.github.pagehelper.PageHelper;
import com.hospital.user.cost.dao.UserCostMapper;
import com.hospital.user.cost.entity.UserCost;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class UserCostServiceImpl implements com.hospital.user.cost.service.UserCostService {
    @Autowired
    private UserCostMapper userCostMapper;


    /* *
     * 缴费状态查询总记录数
     * @return 放回int类型*/
    @Override
    public int UserTotalPageCount() {
        return userCostMapper.UserTotalPageCount();
    }

    /**
     * 按照缴费状态查询user信息
     *
     * @param start      起始下标
     * @param lineNumber 显示的行数
     * @return 放回List<UserEntity></>类型
     */
    @Override
    public List<UserCost> UserSelect(String name, Integer start, Integer lineNumber) {
        PageHelper.startPage(start, lineNumber);
        return userCostMapper.UserSelect(name);
    }

    /**
     * 用户缴费
     *
     * @param id     数据行
     * @param userId 用户id
     * @return true 缴费成功 false 余额不足，缴费失败
     */
    @Override
    public boolean pay(Integer id, Integer userId) {
        //先查出用户的卡内余额
        double money = userCostMapper.selMoney(userId);
        //查询这一次的缴费信息
        UserCost userCost = userCostMapper.selUserById(id);
        //查询检查项目的价格
        double price = userCostMapper.selPrice(userCost.getType());
        //卡内余额小于检查项目的价格，余额不足，缴费失败
        if (money < price) {
            //缴费失败
            return false;
        }
        //插入缴费记录
        userCostMapper.addConsumeLog(userCost.getUserId(), userCost.getType(), "前台缴费", price);
        //更新用户余额
        userCostMapper.userPaymentUpdate(price, userId);
        //修改缴费状态
        userCostMapper.updPayStatus(id);
        //缴费成功
        return true;
    }

    /**
     * 查询用户缴费状态
     *
     * @return 放回int类型
     */
    @Override
    public int UserStateSelect() {
        int i = userCostMapper.UserStateSelect();
        return i;
    }

    /* *
     * 根据用户id查询用户余额
     * @param userId  用户id
     * @return
     */
    @Override
    public Double UserMoneySelect(Integer userId) {
        return userCostMapper.UserMoneySelect(userId);
    }

    /* *
     * 根据用户id查询用户缴费信息
     * @param userId 用户id
     * @return
     */
    @Override
    public List<UserCost> userPayment(Integer userId) {
        return userCostMapper.userPayment(userId);
    }

    /* *
     * 根据用户名查询索要缴费的类型价钱
     * @param userId 用户id
     * @return
     */
    @Override
    public Double ctPrice(Integer userId) {
        return userCostMapper.ctPrice(userId);
    }

    //    *
//     * 缴费成功后的用户缴费信息
//     * @return
//
    @Override
    public int userPaymentInsert(int userId, String type, double money) {
        String QTtype = "前台缴费";
        int i = userCostMapper.userPaymentInsert(userId, type, money);
        int i1 = userCostMapper.userPaymentUpdate(money, userId);
        if (i != 0 && i1 != 0) {
            return 1;
        }
        return 0;
    }

    //    *
//     * 根据用户id修改用户缴费状态
//     * @param userId 用户id
//     * @return
//
    @Override
    public int userStateUpdate(Integer userId) {
        return userCostMapper.userStateUpdate(userId);
    }

    /**
     * 根据用户id查询要缴费类型的次数
     *
     * @param userId 用户id
     * @return
     */
    @Override
    public int userPaymentNbm(Integer userId) {
        return userCostMapper.userPaymentNbm(userId);
    }
}
